package com.zebra.base.anno;

import com.zebra.base.anno.type.*;

import java.lang.annotation.*;

/**
 * 自动封装查询字段
 * @author 销魂钉
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SimpleQuery {
    /**
     * 字段名称
     * @return
     */
    String name() default "";

    /**
     *
     * @return
     */
    FuncType formula() default FuncType.EQ;

    /**
     * 转化策略
     * @return
     */
    FieldNamingStrategy strategy() default FieldNamingStrategy.LOWERCASE_UNDERLINE_MODE;

    /**
     * 是否在select中出现,默认出现  and （字段A or 字段b or 字段c）
     * @return
     */
    boolean isSelect() default true;

    /**
     * RelationStrategy 关系策略 or 或者 and 默认为 and
     * @return
     */
    RelationStrategy relation() default RelationStrategy.AND;

    /**
     * 排序优先级
     * @return
     */
    int priority() default 0;

    /**
     * 范围
     * @return
     */
    RangeType range() default RangeType.NO;

}